﻿using Tesla.Proveedores;
using Tesla.Validador;
using Tesla.Excepciones;
using Rendiciones.Logica.Modelos;

namespace Rendiciones.Logica.Servicios
{
    public interface IServTotales
    {
        TotalAdministrador DeAdministrador(int idUsuario);
        TotalGerente DeGerente(int idUsuario);
        TotalCustodio DeCustodio(int idUsuario);
        TotalContador DeContador(int idUsuario);
        TotalTesoreria DeTesoreria(int idUsuario);
    }

    public class ServTotales : IServTotales
    {
        private readonly IProveedor _proveedor;
        private readonly IValidador _validador;

        public ServTotales(IProveedor provedor, IValidador validador)
        {
            _proveedor = provedor;
            _validador = validador;
        }

        public TotalGerente DeGerente(int idUsuario)
        {
            try
            {
                return _proveedor.Read(new TotalGerente(), new { IdUsuario = idUsuario });
            }
            catch (NoHuboResultadosException)
            {
                return null;
            }
        }

        public TotalAdministrador DeAdministrador(int idUsuario)
        {
            try
            {
                return _proveedor.Read(new TotalAdministrador(), new { IdUsuario = idUsuario });
            }
            catch (NoHuboResultadosException)
            {
                return null;
            }
        }

        public TotalCustodio DeCustodio(int idUsuario)
        {
            try
            {
                return _proveedor.Read(new TotalCustodio(), new { IdUsuario = idUsuario });
            }
            catch (NoHuboResultadosException)
            {
                return null;
            }
        }

        public TotalContador DeContador(int idUsuario)
        {
            try
            {
                return _proveedor.Read(new TotalContador(), new { IdUsuario = idUsuario });
            }
            catch (NoHuboResultadosException)
            {
                return null;
            }
        }

        public TotalTesoreria DeTesoreria(int idUsuario)
        {
            try
            {
                return _proveedor.Read(new TotalTesoreria(), new { IdUsuario = idUsuario });
            }
            catch (NoHuboResultadosException)
            {
                return null;
            }
        }

    }
}